---
title: clsProviderSearch.clsSearchCriteria
summary: API reference for clsProviderSearch.clsSearchCriteria.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-21
library: SAIF.Business.View.Provider
reference_type: embedded
---

# clsProviderSearch.clsSearchCriteria

`clsSearchCriteria` is the nested input model that a caller populates before invoking `clsProviderSearch.searchForProvider()`. It carries every searchable field (name, tax ID, other ID, provider type, service type, MCO name, business/person flag, street, city, state, zip, area code, phone) and hosts the three BOF rule-engine validations that gate whether a search request is well-formed, even though `searchForProvider` does not itself check `IsValid` before executing.

## Purpose
- Requires at least one search field to be populated before the criteria is considered valid ([BR-SRCH-001](../../business-rules.md#br-srch-001-at-least-one-search-field-is-required)).
- Requires a supplied zip code to be numeric, while allowing an empty zip code ([BR-SRCH-002](../../business-rules.md#br-srch-002-zip-code-must-be-numeric)).
- Requires a supplied tax ID (hyphens removed) to be fewer than 10 characters ([BR-SRCH-003](../../business-rules.md#br-srch-003-tax-id-length-limit)).

## Context
- Namespace: `SAIF.Business.View.Provider`
- Assembly/package: `SAIF.Business.View.Provider` (embedded/project-compiled); also distributed as the NuGet package `SAIF.BOF.Business.View.Provider`.

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `ProviderName` | `Property ProviderName As String` | Name text matched (prefix `LIKE`) against last name or business name, upper-cased and trimmed ([BR-SRCH-008](../../business-rules.md#br-srch-008-search-text-normalization)); the field the "at least one criterion" rule validates ([BR-SRCH-001](../../business-rules.md#br-srch-001-at-least-one-search-field-is-required)). |
| `TaxId` | `Property TaxId As String` | Tax ID to match via a join to `provider_tax_id`; must be fewer than 10 characters after hyphens are stripped ([BR-SRCH-003](../../business-rules.md#br-srch-003-tax-id-length-limit)). |
| `OtherId` | `Property OtherId As String` | Alternate identifier matched via a join to `provider_identity`. |
| `ProviderType` | `Property ProviderType As String` | Provider type code to restrict results to, joined against `PROVIDER_TYPE_CODE`. |
| `ServiceType` | `Property ServiceType As String` | Service type code to restrict results to, joined against `provider_service`. |
| `MCOName` | `Property MCOName As String` | MCO plan name used to restrict results via a join to `mco_provider`. |
| `BusinessPerson` | `Property BusinessPerson As String` | Selector mapped to `BUSINESS_FLAG = 'Y'`/`'N'`/unrestricted for `"BUSINESS"`/`"PERSON"`/any other value ([BR-SRCH-004](../../business-rules.md#br-srch-004-businessperson-selector-maps-to-business-flag)). |
| `Street` | `Property Street As String` | Street text matched with a prefix `LIKE` against the address, upper-cased and trimmed ([BR-SRCH-008](../../business-rules.md#br-srch-008-search-text-normalization)). |
| `City` | `Property City As String` | City value used as an exact-match address filter. |
| `State` | `Property State As String` | State value used as an exact-match address filter. |
| `ZipCode` | `Property ZipCode As String` | Zip code filter; must be numeric if supplied, empty is allowed ([BR-SRCH-002](../../business-rules.md#br-srch-002-zip-code-must-be-numeric)). |
| `AreaCode` | `Property AreaCode As String` | Area code used as a phone-number filter component. |
| `PhoneNum` | `Property PhoneNum As String` | Phone number filter; matched with a prefix `LIKE` after `-`/`.` characters are stripped ([BR-SRCH-008](../../business-rules.md#br-srch-008-search-text-normalization)). |
| `IsValid` | `ReadOnly Property IsValid As Boolean` (overridden from `clsBusinessBase`) | True only when [BR-SRCH-001](../../business-rules.md#br-srch-001-at-least-one-search-field-is-required), [BR-SRCH-002](../../business-rules.md#br-srch-002-zip-code-must-be-numeric), and [BR-SRCH-003](../../business-rules.md#br-srch-003-tax-id-length-limit) all pass; not automatically enforced before a search executes. |
| `IsDirty` | `ReadOnly Property IsDirty As Boolean` (overridden from `clsBusinessBase`) | Indicates in-memory field changes since the criteria object was reset; has no effect on persistence since this type performs no writes ([BR-DATA-001](../../business-rules.md#br-data-001-no-write-operations-are-supported)). |

## Behavioral notes
- `Rule_ValidCriteria` ("Error: Enter your search criteria"), `Rule_ValidZipCode` ("Error: Zip code must be numeric"), and `Rule_ValidTaxId` ("Error: The tax id is too long") are registered rule-engine checks evaluated on this object; they are not invoked automatically by `clsProviderSearch.searchForProvider`.
- Callers wanting to enforce these validations must check `IsValid` (or the individual broken-rule collection) themselves before calling `searchForProvider`.*

## Constraints and usage notes
- `resetSearchCriteria()` on the owning `clsProviderSearch` clears this object; reuse across multiple unrelated searches should go through that reset path rather than mutating fields directly, to avoid carrying stale criteria between calls.*

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- SAIF.Business.View.Provider/clsProviderSearch.vb
